//
//  LHHomeTableController.swift
//  LH-Swift-WeiBo
//
//  Created by liuhao on 16/9/22.
//  Copyright © 2016年 liuhao. All rights reserved.
//

import UIKit
import SVProgressHUD

private let cellId = "LHStatusCellId"

class LHHomeTableController: LHBaseTableTableViewController {
    
    
    //加载数据
    
    lazy var homeViewModel:LHHomeViewModel = LHHomeViewModel()
    
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        
        //用户没有登录的的情况下 tableView实际上没有被创建,此时创建的视图是访客视图 如果没有做判断,程序会直接崩溃
        if !userLogin {
            //设置访客视图信息
            visitorview.updateInfo(tipText: "关注一些人,快回到这里看看有什么惊喜",imageName: nil)
            //直接return
            return
        }
        navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "navigationbar_pop", target: self, action: #selector(push))
        
//        visitorview.updateInfo(tipText: "关注一些人,快回到这里看看有什么惊喜",imageName: nil)
//        
        
        //请求数据之前先设置tableView相关的一些属性
        setupTanleView()
        
        homeViewModel.loadData { (success) in
            if !success {
                
                SVProgressHUD.showError(withStatus: errorTip)
                return
            }
            
            //成功 刷新数据
            self.tableView.reloadData()
        }
    }
    
     private func setupTanleView() {
        //注册cell
        let nib = UINib(nibName: "LHStatusCell", bundle: nil)
        
        tableView.register(nib, forCellReuseIdentifier: cellId)
        
        tableView.rowHeight = 360
        
        tableView.separatorStyle = .none
    
    }
    
    //按钮的监听事件

   @objc private func push() {
    
        //实例化控制器
    
    let temVC = LHtempViewController()
    
    navigationController?.pushViewController(temVC, animated: true)
    
    }
}
    //实现数据源方法
    //UITableViewDataSource 重复继承某一个协议会报错
    extension LHHomeTableController {
        
   
        // 数据源有数据 而且也reloadData了 但是没有执行数据源方法
        override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            //使用懒加载的好处 不需要考虑可选类型的使用
            print(">>>>>>>>>>⚔⚔⚔⚔我在这里⚔⚔⚔⚔<<<<<<<<<<<<")
            print(homeViewModel.viewModelArray.count)
            print(">>>>>>>>>>⚔⚔⚔⚔我在这里⚔⚔⚔⚔<<<<<<<<<<<<")
            return homeViewModel.viewModelArray.count
            
        }
        
        override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            
            //使用这种方式自定义cell 需要提前注册
            let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! LHStatusCell
            
            let viewmodel = homeViewModel.viewModelArray[indexPath.row]
            //视图的数据的绑定 依赖模型数据 但是不符合MVVM的设计思想
            //cell.textLabel?.text = viewmodel.status?.created_at
            cell.viewmodel = viewmodel
            print(viewmodel.status?.pic_urls?.last?.thumbnail_pic)
            print("~~~~~~~~~~~~~~~~~~~~~~")
            return cell
        }
        



}
